// 内置模块 (File System -> 文件(夹) 读取 写入 删除 修改)
const path = require('path');
const fs = require('fs');
// console.log(fs);

// 注意: fs中的相对路径默认是相对于 终端的 (process.cwd())

// 文件读取
// fs.readFile(url,encode,callback)   异步读取
//   url 为需要读取的文件路径
//   encode 需要采用哪种字符编码集来进行内容读取(utf - 8, binary)
//   callback 当文件读取完毕之后的回调函数
//         该回调函数会接收两个形参   error, data
//         第一个形参为读取失败时的错误信息
//         第二个形参为读取成功时的文本内容

// fs.readFileSync(url,encoding)   同步读取



// console.log(path.join(process.cwd(), "../data/1.txt"));

// 异步读取
// console.log(1);
// fs.readFile(path.join(__dirname, "../data/1.txt"), "utf-8", function (err, txt) {
//     if (err) throw err;
//     console.log(2);
//     console.log("读取成功", txt);
// })
// console.log(3);

// 同步读取
// var txt = fs.readFileSync(path.join(__dirname, "../data/1.txt"), "utf-8")
// console.log("读取成功", txt);


// 写入文件
// fs.writeFile(url,data,options={encodeing,flag},callback)
// fs.writeFile(path.join(__dirname, "../data/2.txt"), "good good study , day day up", {
//     encoding: "utf-8",
//     flag: "w"
// }, function (err) {
//     if (err) throw err;
//     console.log("文件写入成功");
// })

// 以追加方式写入文件
// fs.appendFile(path.join(__dirname, "../data/2.txt"), "good good study , day day up", {
//     encoding: "utf-8",
//     // flag:"a"   默认
// }, function (err) {
//     if (err) throw err;
//     console.log("文件写入成功");
// })

// fs.existsSync(url)     判断文件(夹)是否存在

// console.log(fs.existsSync(path.join(__dirname, "../data/2.txt")));
// console.log(fs.existsSync(path.join(__dirname, "../data/3.txt")));

// 删除文件
// fs.unlink(path.join(__dirname, "../data/2.txt"), function (err) {
//     if (err) throw err;
//     console.log("文件删除成功");
// })



// 文件夹

// fs.mkdir(url,callback)    向指定目录创建一个文件夹 (文件夹不存在就创建 存在报错)
// fs.mkdir(path.join(__dirname, "../data/2222"), function (err) {
//     if (err) throw err;
//     console.log("文件夹创建成功");
// })


// fs.readdir(path.join(__dirname, "../data"), function (err, list) {
//     if (err) throw err;
//     console.log("文件夹读取成功", list);
// })


// fs.rmdir()   删除文件夹(只能删除空文件夹 -> 如果文件夹不为空,先将文件夹中的内容在一一删除,在删除文件夹)
// fs.rmdir(path.join(__dirname, "../data/2222"), function (err) {
//     if (err) throw err;
//     console.log("文件夹删除成功");
// })

// fs.rmdir(path.join(__dirname, "../data/1111"), function (err) {
//     if (err) throw err;
//     console.log("文件夹删除成功");
// })

// fs.stat() 判断一个路径是文件还是文件夹
// fs.stat(path.join(__dirname, "../data/1111"), function (err, info) {
//     if (err) throw err;
//     console.log(info.isFile()); //是否是文件
//     console.log(info.isDirectory()); //是否是文件夹
// })

// fs.stat(path.join(__dirname, "../data/1.txt"), function (err, info) {
//     if (err) throw err;
//     console.log(info.isFile()); //是否是文件
//     console.log(info.isDirectory()); //是否是文件夹
// })



// 文件和文件夹通用

// fs.existsSync(url)     判断文件(夹)是否存在

// fs.rename(oldUrl,newUrl,callback)  文件(夹)是重命名

// 同目录 -> 重命名
// fs.rename(path.join(__dirname, "../data/1.txt"), path.join(__dirname, "../data/2.txt"), function (err) {
//     if (err) throw err;
//     console.log("重名成功");
// })

//  不同目录 -> 文件移动 
fs.rename(path.join(__dirname, "../data/1.txt"), path.join(__dirname, "../js/2.txt"), function (err) {
    if (err) throw err;
    console.log("重名成功");
})









